package com.zxy.demo.java.collectiondemo;

import java.util.*;

/**
 * CollectionDemo.
 * 
 * Created by zxybird on 17/2/9.
 */
public class CollectionDemo {

  public static void main(String[] args) {

    testList2Array();
    testArray2List();
    testSet2List();
    testList2Set();
    testSet2Array();
    testArray2Set();
    testMap2Set();
    testMap2List();
  }

  private static void testMap2List() {

    Map<String, String> map = new HashMap<String, String>();
    map.put("A", "ABC");
    map.put("K", "KK");
    map.put("L", "LV");

    // 将Map Key 转化为List
    List<String> mapKeyList = new ArrayList<String>(map.keySet());
    System.out.println("mapKeyList:" + mapKeyList);

    // 将Map Key 转化为List
    List<String> mapValuesList = new ArrayList<String>(map.values());
    System.out.println("mapValuesList:" + mapValuesList);

    map.entrySet();

  }

  private static void testMap2Set() {

    Map<String, String> map = new HashMap<String, String>();
    map.put("A", "ABC");
    map.put("K", "KK");
    map.put("L", "LV");

    // 将Map 的键转化为Set
    Set<String> mapKeySet = map.keySet();
    System.out.println("mapKeySet:" + mapKeySet);

    // 将Map 的值转化为Set
    Set<String> mapValuesSet = new HashSet<String>(map.values());
    System.out.println("mapValuesSet:" + mapValuesSet);
  }

  private static void testArray2Set() {

    String[] arr = { "AA", "BB", "DD", "CC", "BB" };

    // 数组-->Set
    Set<String> set = new HashSet<String>(Arrays.asList(arr));
    System.out.println(set);
  }

  private static void testSet2Array() {
    Set<String> set = new HashSet<String>();
    set.add("AA");
    set.add("BB");
    set.add("CC");

    String[] arr = new String[set.size()];
    // Set-->数组
    set.toArray(arr);
    System.out.println(Arrays.toString(arr));
  }

  /**
   * 一般用在去重的时候
   */
  private static void testList2Set() {

    List<String> list = new ArrayList<String>();
    list.add("ABC");
    list.add("EFG");
    list.add("LMN");
    list.add("LMN");

    // List-->Set
    Set<String> listSet = new HashSet<String>(list);
    System.out.println(listSet);
  }

  /**
   * 去重返回
   */
  private static void testSet2List() {

    Set<String> set = new HashSet<String>();
    set.add("AA");
    set.add("BB");
    set.add("CC");

    // Set --> List
    List<String> setList = new ArrayList<String>(set);
    System.out.println(setList);
  }

  private static void testList2Array() {
    // List-->数组
    List<String> list = new ArrayList<String>();
    list.add("AA");
    list.add("BB");
    list.add("CC");
    Object[] objects = list.toArray();// 返回Object数组
    System.out.println("objects:" + Arrays.toString(objects));

    String[] arr = new String[list.size()];
    list.toArray(arr);// 将转化后的数组放入已经创建好的对象中
    System.out.println("strings1:" + Arrays.toString(arr));
  }

  private static void testArray2List() {
    // 数组-->List
    String[] ss = { "JJ", "KK" };
    List<String> list1 = Arrays.asList(ss);
    List<String> list2 = Arrays.asList("AAA", "BBB");
    System.out.println(list1);
    System.out.println(list2);
  }

}
